const db = require('../db/index')
var _ = require('lodash')
    //获取树状结果
function getTreeResult(keyCategories, categories, type) {
    var result = []
    for (idx in categories) {
        var cat = categories[idx]
            //一层分类列表
        if (cat.cat_level == 0) {
            result.push(cat)
        } else {
            if (cat.cat_level >= type) continue
            var parentCat = keyCategories[cat.cat_pid]
            if (!parentCat) continue
            if (!parentCat.children) {
                parentCat['children'] = []
            }
            parentCat.children.push(cat)
        }
    }
    return result
}
//获取分类列表
exports.getCategories = (req, res) => {
        // res.ResData("商品分类参数")
        var type = req.query.type
        var pagenum = req.query.pagenum //当前页码值
        var pagesize = req.query.pagesize //每页显示多少条数据
        var sql = "select * from sp_category"
        db.query(sql, (err, result) => {
            if (err) return res.ResDate(err)
                // console.log(result);
            var keyCategories = _.keyBy(result, 'cat_id')
                // console.log(keyCategories);
            if (!type) type = 3
            var resultdata = getTreeResult(keyCategories, result, type)
                // res.ResData(resultdata)
            if (pagenum && pagesize) {
                count = resultdata.length //总条数
                pagenum = parseInt(pagenum)
                pagesize = parseInt(pagesize)
                data = _.take(_.drop(resultdata, (pagenum - 1) * pagesize), pagesize)
                    // console.log(data);
                data = {
                    "total": count,
                    "pagenum": pagenum,
                    "pagesize": pagesize,
                    "result": data
                }
                return res.ResData("获取参数列表成功!", 200, data)
            }
            res.ResData("获取参数列表成功!", 200, resultdata)
        })
    }
    //添加分类
exports.addCategories = (req, res) => {
        // res.ResData("添加分类")
        // 1. 获取数据
        var cat_pid = req.body.cat_pid
        var cat_name = req.body.cat_name
        var cat_level = req.body.cat_level
            //2.检查分类名是否存在
        var sql = "select * from sp_category where cat_name=?"
        db.query(sql, cat_name, (err, result) => {
            if (err) return res.ResData("添加失败!")
            if (result.length > 0) return res.ResData("分类名已存在!")
                //3.添加数据
            var sql = "insert into sp_category (cat_name,cat_pid,cat_level)values(?,?,?)"
            db.query(sql, [cat_name, cat_pid, cat_level], (err, data) => {
                if (err) return res.ResData("添加失败!")
                var sql = "select * from sp_category where cat_name=?"
                db.query(sql, cat_name, (err, result) => {
                    if (err) return res.ResData("获取分类信息失败!")
                    res.ResData("添加分类成功", 200, {
                        "cat_id": result[0].cat_id,
                        "cat_name": result[0].cat_name,
                        "cat_pid": result[0].cat_pid,
                        "cat_level": result[0].cat_level
                    })
                })
            })
        })
    }
    //根据 id 查询分类
exports.searchCategories = (req, res) => {
        // res.ResData("根据 id 查询分类")
        var id = req.params.id
        var sql = "select * from sp_category where cat_id=?"
        db.query(sql, id, (err, result) => {
            if (err) return res.ResData("查询失败!", err)
            if (result.length > 0) {
                res.ResData("分类查询成功", 200, {
                    "cat_id": result[0].cat_id,
                    "cat_name": result[0].cat_name,
                    "cat_pid": result[0].cat_pid,
                    "cat_level": result[0].cat_level
                })
            } else {
                res.ResData('分类查询失败')
            }
        })
    }
    //编辑提交分类
exports.updateCategories = (req, res) => {
        // res.ResData("编辑提交分类")
        var cat_id = req.params.id
        var cat_name = req.body.cat_name
        var sql = "update sp_category set cat_name=? where cat_id=?"
        db.query(sql, [cat_name, cat_id], (err, result) => {
            if (err) return res.ResData("修改失败!")
            if (result.affectedRows < 1) return res.ResData("更新角色信息失败!")
            var sql = "select * from sp_category where cat_id=?"
            db.query(sql, cat_id, (err, result) => {
                if (err) return res.ResData("获取信息失败!")
                res.ResData("更新分类信息成功", 200, {
                    "cat_id": result[0].cat_id,
                    "cat_name": result[0].cat_name,
                    "cat_pid": result[0].cat_pid,
                    "cat_level": result[0].cat_level
                })
            })
        })
    }
    //删除分类
exports.deleteCategories = (req, res) => {
    // res.ResData("删除分类")
    var id = req.params.id
    var sql = "delete from sp_category where cat_id=?"
    db.query(sql, id, (err, result) => {
        if (err) return res.ResData("删除失败!", err)
        if (result.affectedRows != 1) return ResData("删除角色失败!")
        res.ResData("删除成功", 200)
    })
}